EC2インスタンスのTomcatプロセスを監視する方法
困っていた内容
CloudWatchからtomcatプロセスを監視したいのですが、どうすればよいでしょうか?
CloudWatch Agentの設定ファイルにおいて、httpdの様にexeでtomcatと指定しても、正しく監視できていません。
どう対応すればいいの?
procstatプラグインの「pattern」を使用することで監視が可能です。
本記事では、実際の設定方法について解説します。
やってみた
前提
- CloudWatch Agentをセットアップが完了していること (SSMのParameter storeに設定を保存していること)
- tomcatがインストールされていること
手順
ドキュメントでは、以下の様に記載されています。
procstat プラグインでプロセスメトリクスを収集する - Amazon CloudWatch
・pattern: プロセスの起動に使用するコマンドラインでプロセスを選択します。
翻訳が微妙ではありますが、psコマンドないしsystemctlコマンドのstauts (-l)オプションを使用して、tomcatプロセスの起動指定を確認してみます。 以下の実行結果より「org.apache.catalina.startup.Bootstrap start」が使用されていることが確認できました。
[ec2-user@ip-172-31-44-146 ~]$ ps aux | grep tomcat tomcat 3520 8.6 7.6 2322052 77528 ? Ssl 09:16 0:02 /usr/lib/jvm/jre/bin/java -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar ★実際には以下内容が1行で表示されます -Dcatalina.base=/usr/share/tomcat -Dcatalina.home=/usr/share/tomcat -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat/temp -Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start ★tomcatプロセスの起動指定 ec2-user 3574 0.0 0.0 119436 864 pts/0 S+ 09:17 0:00 grep --color=auto tomcat [ec2-user@ip-172-31-44-146 ~]$ systemctl status tomcat -l ● tomcat.service - Apache Tomcat Web Application Container Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled) Active: active (running) since 土 2021-07-31 09:16:56 UTC; 3min 57s ago Main PID: 3520 (java) CGroup: /system.slice/tomcat.service └─3520 /usr/lib/jvm/jre/bin/java -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar ★実際には以下内容が1行で表示されます -Dcatalina.base=/usr/share/tomcat -Dcatalina.home=/usr/share/tomcat -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat/temp -Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start ★tomcatプロセスの起動指定
{ "metrics": { "metrics_collected": { "procstat": [ { "pattern": "org.apache.catalina.startup.Bootstrap start", "measurement": [ "pid_count" ], "metrics_collection_interval": 10 } ] } } }
- マネジメントコンソールのSystems Manager
- サイドバーの「Run Command」をクリック
- 黄色いボタンの「Run Command」をクリック
- 検索ボックスより「AmazonCloudWatch-ManageAgent」を確認、ラジオボタンにチェック
- コマンドのパラメータを右記の様に修正「Action: configure(append)」「Optional Configuration Location: AmazonCloudWatch-linux」
- ターゲットより、tomcatが稼働しているインスタンスを指定
- 全て指定ができたら「実行」
動作確認
[ec2-user@ip-172-31-44-146 ~]$ date; sudo systemctl stop tomcat 2021年 7月 31日 土曜日 19:23:39 JST [ec2-user@ip-172-31-44-146 ~]$ sudo systemctl status tomcat ● tomcat.service - Apache Tomcat Web Application Container Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled) Active: inactive (dead) :
[ec2-user@ip-172-31-44-146 ~]$ date; sudo systemctl start tomcat 2021年 7月 31日 土曜日 19:33:08 JST [ec2-user@ip-172-31-44-146 ~]$ sudo systemctl status tomcat ● tomcat.service - Apache Tomcat Web Application Container Loaded: loaded (/usr/lib/systemd/system/tomcat.service; disabled; vendor preset: disabled) Active: active (running) since 土 2021-07-31 19:33:08 JST; 8s ago :